/**
 * 招聘模块相关API接口
 * @module api/recruit
 * @author 互成一家团队
 * @description 招聘模块相关接口请求函数
 */
import request from './request';

// 引入模拟数据（开发环境使用）
import { recruitResponse } from '../mock/recruit';

// 是否使用模拟数据
const USE_MOCK = true;

/**
 * 获取招聘岗位列表
 * @function getRecruitList
 * @description 获取招聘岗位列表，支持分页和筛选
 * @param {Object} params - 查询参数
 * @param {Number} [params.page=1] - 页码，默认为1
 * @param {Number} [params.size=10] - 每页条数，默认为10
 * @param {Number} [params.type] - 岗位类型ID
 * @param {String} [params.keyword] - 搜索关键词
 * @param {String} [params.sort] - 排序方式，可选值：latest(最新)、deadline(截止日期)、popular(热门)
 * @returns {Promise} 返回Promise对象，包含岗位列表数据以及分页信息
 * @see {@link /openapi/recruit.yaml#components.schemas.RecruitItem} RecruitItem数据结构
 */
export function getRecruitList(params = {}) {
  if (USE_MOCK) {
    return Promise.resolve(recruitResponse.getRecruitList);
  }
  return request({
    url: '/recruit/list',
    method: 'GET',
    data: params
  });
}

/**
 * 获取招聘岗位详情
 * @function getRecruitDetail
 * @description 根据岗位ID获取招聘岗位详细信息
 * @param {Number} id - 岗位ID
 * @returns {Promise} 返回Promise对象，包含岗位详细信息
 * @see {@link /openapi/recruit.yaml#components.schemas.RecruitDetail} RecruitDetail数据结构
 */
export function getRecruitDetail(id) {
  if (USE_MOCK) {
    return Promise.resolve(recruitResponse.getRecruitDetail(id));
  }
  return request({
    url: `/recruit/detail/${id}`,
    method: 'GET'
  });
}

/**
 * 获取用户投递记录
 * @function getUserApplications
 * @description 获取当前用户的所有投递申请记录
 * @returns {Promise} 返回Promise对象，包含用户的投递记录列表
 * @see {@link /openapi/recruit.yaml#components.schemas.Application} Application数据结构
 */
export function getUserApplications() {
  if (USE_MOCK) {
    return Promise.resolve(recruitResponse.getUserApplications);
  }
  return request({
    url: '/recruit/applications',
    method: 'GET'
  });
}

/**
 * 获取用户收藏的岗位
 * @function getUserFavorites
 * @description 获取当前用户收藏的所有招聘岗位
 * @returns {Promise} 返回Promise对象，包含用户收藏的岗位列表
 * @see {@link /openapi/recruit.yaml#components.schemas.Favorite} Favorite数据结构
 */
export function getUserFavorites() {
  if (USE_MOCK) {
    return Promise.resolve(recruitResponse.getUserFavorites);
  }
  return request({
    url: '/recruit/favorites',
    method: 'GET'
  });
}

/**
 * 投递简历
 * @function submitApplication
 * @description 向指定招聘岗位提交简历申请
 * @param {Object} data - 简历数据
 * @param {Number} data.recruitId - 岗位ID
 * @param {Object} data.resume - 简历详细信息
 * @param {String} data.resume.name - 姓名
 * @param {String} data.resume.gender - 性别
 * @param {String} data.resume.phone - 手机号
 * @param {String} data.resume.email - 邮箱
 * @param {String} data.resume.school - 学校
 * @param {String} data.resume.major - 专业
 * @param {String} data.resume.grade - 年级
 * @param {String} data.resume.skills - 技能
 * @param {String} data.resume.experience - 经历
 * @param {String} data.resume.awards - 奖项
 * @param {String} data.resume.selfIntroduction - 自我介绍
 * @returns {Promise} 返回Promise对象，投递成功返回空数据
 * @see {@link /openapi/recruit.yaml#components.schemas.Resume} Resume数据结构
 */
export function submitApplication(data) {
  if (USE_MOCK) {
    return Promise.resolve(recruitResponse.submitApplication);
  }
  return request({
    url: '/recruit/apply',
    method: 'POST',
    data
  });
}

/**
 * 收藏/取消收藏岗位
 * @function toggleFavorite
 * @description 收藏或取消收藏指定招聘岗位
 * @param {Number} id - 岗位ID
 * @param {Boolean} isFavorite - 当前是否已收藏，true表示已收藏需要取消，false表示未收藏需要添加
 * @returns {Promise} 返回Promise对象，操作成功返回空数据
 * @see {@link /openapi/recruit.yaml#components.schemas.Favorite} Favorite数据结构
 */
export function toggleFavorite(id, isFavorite) {
  if (USE_MOCK) {
    return Promise.resolve(recruitResponse.toggleFavorite);
  }
  return request({
    url: `/recruit/favorite/${id}`,
    method: isFavorite ? 'DELETE' : 'POST'
  });
}
